#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <unordered_set>
using namespace std;
// ABCBA
// AABB
// string s, t;
// int main()
// {
//     cin >> s;
//     int hash[26] = {0};
//     for (auto e : s)
//     {
//         hash[e - 'A']++;
//     }
//     cin >> t;
//     bool flag = true;
//     for (int i = 0; i < t.size(); i++)
//     {
//         if (!hash[t[i] - 'A'])
//         {
//             flag = false;
//             break;
//         }
//     }
//     if (flag)
//     {
//         cout << "Yes" << endl;
//     }
//     else
//     {
//         cout << "No" << endl;
//     }
//     return 0;
// }

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int n;
const int N = 100005;
int main()
{
    cin >> n;
    int hash[N] = {0};
    int dp[N] = {0};
    while (n--)
    {
        int tmp = 0;
        cin >> tmp;
        hash[tmp] += tmp;
    }
    dp[1] = hash[1];
    for (int i = 2; i < N; i++)
    {
        dp[i] = dp[i - 2] + hash[i];
    }
    cout << max(dp[N - 1], dp[N - 2]) << endl;
    return 0;
}